package com.ligure.interpreter;

/**
 * Created by Administrator on 2017/2/28.
 * 解释器模式：我们将整个语言都看作一个抽象语法树，每一个节点都是一个表达式，而每一个叶子节点都是终结符表达式，
 * 每一个非叶子节点都是非终结符表达式。当我们需要解释一段语言时，我们只需要将这段语言转化成抽象语法树，并按照树的结构进行解释即可。
 */
public class Client {
    public static void main(String[] args) {
        Expression a = new TerminalExpression();
        Expression b = new TerminalExpression();
        Context ctx = new Context();
        ctx.assign(a,1);
        ctx.assign(b,2);
        System.out.println(a.interpret(ctx));
        System.out.println(b.interpret(ctx));
        Expression add = new AddExpression(a,b);
        System.out.println(add.interpret(ctx));
        Expression sub = new SubExpression(a,b);
        System.out.println(sub.interpret(ctx));
    }
}
